/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package lhs;

import java.util.ArrayList;

/**
 *Ein klassi ið skal ímynda havnina. Klassin inniheldu nøkur felti ið innihalda
 * navni á havnini, longdin, djúbt og ein lista av skipum ið halda til á hesari
 * havn.
 * @author Degon
 */
public class Harbor {
    
    private String name; //navni hjá Harbor.
    private int length; //Longdin hjá Harbor.
    private double depth; //Dýpt á lægstu fjørðu.
    private ArrayList<Ship> listShips; //Ein listi av skipum í halda til á hvørjari havn.
    
    /**
     * 
     * 
     * @param name parametur ið initialiserar navni hjá havnini av typuni String.
     * @param length parametur ið initiliserar longdina hjá havnini av typuni int.
     * @param depth parametur ið initialiserar djúbdina á lægstu fjørðu á havnini av typuni double.
     */
    public Harbor(String name, int length, double depth)
    {
        this.name = name;
        this.length = length;
        this.depth = depth;
        
       listShips = new ArrayList<Ship>();
       
       Ship s1 = new Ship("Grønanes", 100, 5.5, 3500, 10);
        Ship s2 = new Ship("Hvítiklettur", 105, 5.8, 3800, 12);
        Ship s3 = new Ship("Svartiklettur", 110, 6.0, 4000, 16);
        
        listShips.add(s1);
        listShips.add(s2);
        listShips.add(s3);
       
    }
    
    public void addShips(Ship ship)
    {
        listShips.add(ship);
    }
    
    public void removeShip(Ship ship)
    {
        listShips.remove(ship);
    }
    
    public String getName()
    {
        return name;
    }
    
    public int calculateLength()
    {
        int totalLength = 0;
        
        for(Ship p : listShips)
        {
            totalLength = totalLength + p.getLength();
        }
        
        return totalLength;
    }
    
    /**
     * Ein accessor metoda ið tekur sær av at returnerar virði ið liggur goymt í feltinum
     * "depth".
     * @return Returnerar eitt double virði ið svarar til djúbdina á lægstu fjørðu á havnini.
     */
    public double getDepth()
    {
        return depth;
    }
    
    /**
     * 
     * @return Returnerar ein lista av Ship objektum.
     */
    public ArrayList showShips()
    {
        ArrayList<Ship> temp = new ArrayList<Ship>();
        
        for(Ship s : listShips)
        {
            temp.add(s);
        }
        return temp;
    }
    
    /**
     * Ein metoda ið skal returnerar eitt string virði fyri objekti Harbor.
     * @return Returner
     */
    @Override
    public String toString()
    {
        return name;
    }
    
    /**
     * 
     * @return 
     */
    public Ship getShip()
    {
        Ship temp = null;
        
        for(Ship p : listShips)
        {
            temp = p;
        }
        return temp;
    }
}
